package lc20240625;

public class NumsAnd {
    public static int rangeBitwiseAnd(int left, int right) {
//        if (left==right){
//            return left;
//        }
//        int res=left;
//        while(left<right){
//            left=left+1;
//            res=res&left;
//        }
//        return res;
        // 移动位数
        int shift = 0;

        // 找到公共前缀
        //依次右移，因为前缀都相同。然后将left左移shift位就是&后的结果。
        while (left < right) {
            left >>= 1;
            right >>= 1;
            shift++;
        }

        // 将公共前缀移回原位
        return left << shift;
    }

    public static void main(String[] args) {
        System.out.println(rangeBitwiseAnd(5, 7));
    }
}
